include "map_builder.lua"
include "trajectory_builder.lua"

options = {
    map_builder = MAP_BUILDER,  -- 使用 MAP_BUILDER 模块
    trajectory_builder = TRAJECTORY_BUILDER,  -- 使用 TRAJECTORY_BUILDER 模块
    map_frame = "map",  -- 地图坐标系的名称
    tracking_frame = "imu_link",  -- 必须与 IMU 共位
    published_frame = "base_footprint",  -- 机器人发布里程计信息的坐标系
    odom_frame = "odom_combined",  -- 里程计坐标系的名称
    provide_odom_frame = false,  -- 是否由 Cartographer 提供里程计坐标系
    publish_frame_projected_to_2d = true,  -- 将发布的位姿投影到2D平面
    use_odometry = true,  -- 是否使用外部里程计数据
    use_nav_sat = false,  -- 是否使用卫星导航数据
    use_landmarks = false,  -- 是否使用地标进行定位
    num_laser_scans = 1,  -- 激光扫描传感器的数量
    num_multi_echo_laser_scans = 0,  -- 多回波激光扫描传感器的数量
    num_subdivisions_per_laser_scan = 1,  -- 每次激光扫描的子扫描数
    num_point_clouds = 0,  -- 点云传感器的数量
    lookup_transform_timeout_sec = 0.2,  -- 查找坐标变换的超时时间
    submap_publish_period_sec = 0.3,  -- 发布子地图的时间间隔
    pose_publish_period_sec = 5e-3,  -- 发布位姿的时间间隔
    trajectory_publish_period_sec = 30e-3,  -- 发布轨迹的时间间隔
    rangefinder_sampling_ratio = 1.,  -- 激光雷达数据的采样比例
    odometry_sampling_ratio = 1.,  -- 里程计数据的采样比例
    fixed_frame_pose_sampling_ratio = 1.,  -- 固定坐标系位姿数据的采样比例
    imu_sampling_ratio = 1.,  -- IMU 数据的采样比例
    landmarks_sampling_ratio = 1.,
  }
  
-- 设置 Map Builder 使用 2D 模式
MAP_BUILDER.use_trajectory_builder_2d = true

TRAJECTORY_BUILDER_2D.use_imu_data = true  -- 是否使用 IMU 数据
-- TRAJECTORY_BUILDER_2D.min_range = 0.3
-- TRAJECTORY_BUILDER_2D.max_range = 100.
-- -- TRAJECTORY_BUILDER_2D.min_z = 0.2 -- / -0.8
-- TRAJECTORY_BUILDER_2D.voxel_filter_size = 0.02
TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
-- -- TRAJECTORY_BUILDER_2D.ceres_scan_matcher.occupied_space_weight = 20.
-- -- TRAJECTORY_BUILDER_2D.ceres_scan_matcher.translation_weight = 2.
-- -- TRAJECTORY_BUILDER_2D.ceres_scan_matcher.rotation_weight = 2.

-- TRAJECTORY_BUILDER_2D.submaps.num_range_data = 80.
-- TRAJECTORY_BUILDER_2D.submaps.grid_options_2d.resolution = 0.05 -- / 0.02
-- POSE_GRAPH.optimize_every_n_nodes = 160. -- 2 倍的 num_range_data 以上
-- POSE_GRAPH.constraint_builder.sampling_ratio = 0.3
-- POSE_GRAPH.constraint_builder.max_constraint_distance = 15.
-- POSE_GRAPH.constraint_builder.min_score = 0.60
-- POSE_GRAPH.constraint_builder.global_localization_min_score = 0.65

return options
